{{- $link := .link -}}
{{- $title := .title -}}
{{- $icon := .icon -}}
{{- $subtitle := .subtitle -}}
{{- $image := .image -}}
{{- $width := .width -}}
{{- $height := .height -}}
{{- $imageStyle := .imageStyle -}}
{{- $tag := .tag -}}
{{- $tagColor := .tagColor | default .tagType | default "" -}}{{- /* Compatibility with previous parameter. */ -}}
{{- $tagBorder := not (eq .tagBorder false) | default true }}
{{- $tagIcon := .tagIcon -}}

{{ $linkClass := "hx:hover:border-gray-300 hx:bg-transparent hx:shadow-xs hx:dark:border-neutral-800 hx:hover:bg-slate-50 hx:hover:shadow-md hx:dark:hover:border-neutral-700 hx:dark:hover:bg-neutral-900" }}
{{- with $image -}}
  {{ $linkClass = "hx:hover:border-gray-300 hx:bg-gray-100 hx:shadow-sm hx:dark:border-neutral-700 hx:dark:bg-neutral-800 hx:dark:text-gray-50 hx:hover:shadow-lg hx:dark:hover:border-neutral-500 hx:dark:hover:bg-neutral-700" }}
{{- end -}}

{{- $external := strings.HasPrefix $link "http" -}}
{{- $href := cond (strings.HasPrefix $link "/") ($link | relURL) $link -}}


<a
  class="hextra-card hx:group hx:flex hx:flex-col hx:justify-start hx:overflow-hidden hx:rounded-lg hx:border hx:border-gray-200 hx:text-current hx:no-underline hx:dark:shadow-none hx:hover:shadow-gray-100 hx:dark:hover:shadow-none hx:shadow-gray-100 hx:active:shadow-sm hx:active:shadow-gray-200 hx:transition-all hx:duration-200 {{ $linkClass }}"
  {{- if $link -}}
    href="{{ $href }}"
    {{ with $external }}target="_blank" rel="noreferrer"{{ end -}}
  {{- end -}}
>
  {{- with $image -}}
    <img
      alt="{{ $title }}"
      class="hextra-card-image"
      loading="lazy"
      decoding="async"
      src="{{ $image | safeURL }}"
      {{ with $width }}width="{{ . }}"{{ end }}
      {{ with $height }}height="{{ . }}"{{ end }}
      {{ with $imageStyle }}style="{{ . | safeCSS }}"{{ end }}
    />
  {{- end -}}

  {{- $padding := "hx:p-4" -}}
  {{- with $subtitle -}}
    {{- $padding = "hx:pt-4 hx:px-4" -}}
  {{- end -}}


  <span class="hextra-card-icon hx:flex hx:font-semibold hx:items-start hx:gap-2 {{ $padding }} hx:text-gray-700 hx:hover:text-gray-900 hx:dark:text-neutral-200 hx:dark:hover:text-neutral-50">
    {{- with $icon }}{{ partial "utils/icon.html" (dict "name" $icon) -}}{{- end -}}
    {{- $title -}}
  </span>
  {{- with $subtitle -}}
    <div class="hextra-card-subtitle hx:line-clamp-3 hx:text-sm hx:font-normal hx:text-gray-500 hx:dark:text-gray-400 hx:px-4 hx:mb-4 hx:mt-2">{{- $subtitle | markdownify -}}</div>
  {{- end -}}

  {{- if $tag }}
    {{- partial "shortcodes/badge.html" (dict
      "content" $tag
      "color" $tagColor
      "class" "hextra-card-tag"
      "border" $tagBorder
      "icon" $tagIcon
      )
    -}}
  {{- end -}}
</a>
{{- /* Strip trailing newline. */ -}}
